{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# Classification Cluster Part 2"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import matplotlib.pyplot as plt\n",
        "import pandas as pd\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# fix_yahoo_finance is used to fetch data \n",
        "import fix_yahoo_finance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "stocks_dict = {\n",
        "    'Advanced Micro Devices':'AMD',\n",
        "    'Amazon': 'AMZN',\n",
        "    'Apple': 'AAPL',\n",
        "    'Walgreen': 'WBA',\n",
        "    'Northrop Grumman': 'NOC',\n",
        "    'Boeing': 'BA',\n",
        "    'Lockheed Martin': 'LMT',\n",
        "    'McDonalds':  'MCD',\n",
        "    'Intel': 'INTC',\n",
        "    'Navistar': 'NAV',\n",
        "    'IBM': 'IBM',\n",
        "    'Texas Instruments': 'TXN',\n",
        "    'MasterCard': 'MA',\n",
        "    'Microsoft': 'MSFT',\n",
        "    'General Electrics': 'GE',\n",
        "    'Symantec': 'SYMC',\n",
        "    'American Express': 'AXP',\n",
        "    'Pepsi': 'PEP',\n",
        "    'Coca Cola': 'KO',\n",
        "    'Johnson & Johnson': 'JNJ',\n",
        "    'Toyota': 'TM',\n",
        "    'Honda': 'HMC',\n",
        "    'Mistubishi': 'MSBHY',\n",
        "    'Sony': 'SNE',\n",
        "    'Exxon': 'XOM',\n",
        "    'Chevron': 'CVX',\n",
        "    'Valero Energy': 'VLO',\n",
        "    'Ford': 'F',\n",
        "    'Bank of America': 'BAC', \n",
        "    'Petrobras': 'PBR',\n",
        "    'Vale': 'VALE'}"
      ],
      "outputs": [],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Split dict into list of companies and symbols\n",
        "names, symbols = np.array(list(stocks_dict.items())).T"
      ],
      "outputs": [],
      "execution_count": 3,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "start = '2017-01-01'\n",
        "end = '2017-12-31'\n",
        "\n",
        "print(\"Downloading values for period %s to %s:\" % (start, end))\n",
        "dataset = [yf.download(symbol,start,end) for symbol in symbols]\n",
        "print(\"Done!\")"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Downloading values for period 2017-01-01 to 2017-12-31:\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "[*********************100%***********************]  1 of 1 downloaded\n",
            "Done!\n"
          ]
        }
      ],
      "execution_count": 5,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Get opening price\n",
        "open_price = np.array([p[\"Open\"] for p in dataset]).astype(np.float)\n",
        "\n",
        "# Get closing price\n",
        "close_price = np.array([p[\"Adj Close\"] for p in dataset]).astype(np.float)"
      ],
      "outputs": [],
      "execution_count": 7,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Calculate percent change\n",
        "X = (close_price - open_price) / open_price"
      ],
      "outputs": [],
      "execution_count": 8,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.cluster import KMeans\n",
        "\n",
        "# Define the number of clusters in a variable 'n_clusters'\n",
        "n_clusters = 12\n",
        "\n",
        "# Cluster the data\n",
        "kmeans = KMeans(n_clusters)\n",
        "kmeans.fit(X)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 10,
          "data": {
            "text/plain": [
              "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
              "    n_clusters=12, n_init=10, n_jobs=1, precompute_distances='auto',\n",
              "    random_state=None, tol=0.0001, verbose=0)"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 10,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Print results\n",
        "labels = kmeans.labels_\n",
        "for i in range(n_clusters):\n",
        "    print('Cluster %i: %s' % ((i + 1), ', '.join(names[labels == i])))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Cluster 1: Honda, Lockheed Martin, Intel, McDonalds, Toyota, Johnson & Johnson, Texas Instruments\n",
            "Cluster 2: Navistar\n",
            "Cluster 3: General Electrics\n",
            "Cluster 4: MasterCard, Sony, Amazon\n",
            "Cluster 5: Microsoft, Northrop Grumman, Boeing, Bank of America, Symantec, American Express, Apple\n",
            "Cluster 6: Advanced Micro Devices\n",
            "Cluster 7: Vale\n",
            "Cluster 8: Exxon, Chevron, IBM\n",
            "Cluster 9: Pepsi, Coca Cola, Mistubishi, Valero Energy\n",
            "Cluster 10: Walgreen\n",
            "Cluster 11: Petrobras\n",
            "Cluster 12: Ford\n"
          ]
        }
      ],
      "execution_count": 11,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "min_clusters = 1\n",
        "max_clusters = 20\n",
        "distortions = []\n",
        "for i in range(min_clusters, max_clusters+1):\n",
        "    km = KMeans(n_clusters=i,\n",
        "                init='k-means++',\n",
        "                n_init=10,\n",
        "                max_iter=300,\n",
        "                random_state=0)\n",
        "    km.fit(X)\n",
        "    distortions.append(km.inertia_)\n",
        "    \n",
        "# Plot\n",
        "plt.plot(range(min_clusters, max_clusters+1), distortions, marker='o')\n",
        "plt.xlabel(\"Number of clusters\")\n",
        "plt.ylabel(\"Distortion\")\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "image/png": [
              "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\n"
            ],
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 12,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.pipeline import make_pipeline\n",
        "from sklearn.cluster import KMeans\n",
        "from sklearn.preprocessing import Normalizer\n",
        "\n",
        "\n",
        "normalizer = Normalizer()\n",
        "\n",
        "# Create a KMeans model - 10 clusters\n",
        "kmeans = KMeans(n_clusters=10, max_iter = 1000)\n",
        "\n",
        "# Make a pipeline chaining normalizer and kmeans\n",
        "pipeline = make_pipeline(normalizer, kmeans)"
      ],
      "outputs": [],
      "execution_count": 13,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "pipeline.fit(X)"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 14,
          "data": {
            "text/plain": [
              "Pipeline(memory=None,\n",
              "     steps=[('normalizer', Normalizer(copy=True, norm='l2')), ('kmeans', KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=1000,\n",
              "    n_clusters=10, n_init=10, n_jobs=1, precompute_distances='auto',\n",
              "    random_state=None, tol=0.0001, verbose=0))])"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 14,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(kmeans.inertia_)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "1.0479387315234514\n"
          ]
        }
      ],
      "execution_count": 16,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "labels = pipeline.predict(X)\n",
        "\n",
        "df = pd.DataFrame({'labels':labels,'companies':names})\n",
        "\n",
        "print(df.sort_values('labels'))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "                 companies  labels\n",
            "0                Microsoft       0\n",
            "25                    Vale       0\n",
            "24           Valero Energy       0\n",
            "22       General Electrics       0\n",
            "20              Mistubishi       0\n",
            "19                     IBM       0\n",
            "18                Walgreen       0\n",
            "29       Johnson & Johnson       0\n",
            "12                  Boeing       0\n",
            "11               Coca Cola       0\n",
            "15                  Toyota       0\n",
            "9                McDonalds       0\n",
            "2                    Honda       0\n",
            "3          Lockheed Martin       0\n",
            "10                   Pepsi       0\n",
            "5         Northrop Grumman       0\n",
            "6                    Exxon       0\n",
            "4                     Ford       0\n",
            "7                    Intel       0\n",
            "8                  Chevron       0\n",
            "30       Texas Instruments       0\n",
            "27                  Amazon       1\n",
            "17                Navistar       2\n",
            "1                Petrobras       3\n",
            "26                    Sony       4\n",
            "21  Advanced Micro Devices       5\n",
            "14              MasterCard       6\n",
            "28                   Apple       7\n",
            "16                Symantec       8\n",
            "13         Bank of America       9\n",
            "23        American Express       9\n"
          ]
        }
      ],
      "execution_count": 18,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.preprocessing import Normalizer\n",
        "\n",
        "normalizer = Normalizer()\n",
        "new_X = normalizer.fit_transform(X)\n",
        "\n",
        "print(new_X.max())\n",
        "print(new_X.min())\n",
        "print(new_X.mean())"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.290510178654611\n",
            "-0.28571025102742664\n",
            "-0.05092923629722951\n"
          ]
        }
      ],
      "execution_count": 21,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.decomposition import PCA\n",
        "\n",
        "#visualize the results on PCA-reduced data\n",
        "reduced_data = PCA(n_components = 2).fit_transform(new_X)\n",
        "\n",
        "#run kmeans on the reduced data\n",
        "kmeans = KMeans(n_clusters =10)\n",
        "kmeans.fit(reduced_data)\n",
        "labels = kmeans.predict(reduced_data)\n",
        "\n",
        "print(kmeans.inertia_)\n",
        "\n",
        "#Create a dataframe\n",
        "\n",
        "df = pd.DataFrame({'labels':labels,'companies':names})\n",
        "\n",
        "#sorted by cluster labels\n",
        "print(df.sort_values('labels'))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "0.021621993804491726\n",
            "                 companies  labels\n",
            "24           Valero Energy       0\n",
            "4                     Ford       0\n",
            "22       General Electrics       0\n",
            "6                    Exxon       0\n",
            "8                  Chevron       0\n",
            "19                     IBM       0\n",
            "21  Advanced Micro Devices       1\n",
            "1                Petrobras       2\n",
            "28                   Apple       3\n",
            "16                Symantec       3\n",
            "17                Navistar       4\n",
            "0                Microsoft       5\n",
            "30       Texas Instruments       5\n",
            "5         Northrop Grumman       5\n",
            "14              MasterCard       6\n",
            "26                    Sony       6\n",
            "27                  Amazon       7\n",
            "13         Bank of America       8\n",
            "25                    Vale       8\n",
            "2                    Honda       9\n",
            "3          Lockheed Martin       9\n",
            "23        American Express       9\n",
            "7                    Intel       9\n",
            "20              Mistubishi       9\n",
            "9                McDonalds       9\n",
            "18                Walgreen       9\n",
            "10                   Pepsi       9\n",
            "11               Coca Cola       9\n",
            "29       Johnson & Johnson       9\n",
            "12                  Boeing       9\n",
            "15                  Toyota       9\n"
          ]
        }
      ],
      "execution_count": 22,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "\n",
        "\n",
        "#step size of mesh\n",
        "h = 0.01\n",
        "\n",
        "#plot decision boundary\n",
        "x_min =  reduced_data[:,0].min() -1\n",
        "x_max = reduced_data[:,0].max() +1\n",
        "\n",
        "y_min = reduced_data[:,1].min()-1\n",
        "y_max = reduced_data[:,1].max()+1\n",
        "\n",
        "xx, yy = np.meshgrid(np.arange(x_min,x_max,h), np.arange(y_min,y_max,h))\n",
        "\n",
        "#obtain labels for each point in the mesh\n",
        "\n",
        "Z = kmeans.predict(np.c_[xx.ravel(),yy.ravel()])\n",
        "\n",
        "#result into a color plot\n",
        "\n",
        "Z = Z.reshape(xx.shape)\n",
        "\n",
        "#define color plot\n",
        "cmap = plt.cm.Paired\n",
        "\n",
        "#plotting figure\n",
        "plt.clf()\n",
        "plt.figure(figsize=(10,10))\n",
        "plt.imshow(Z,interpolation='nearest',\n",
        "          extent = (xx.min(),xx.max(),yy.min(),yy.max()),cmap = cmap,\n",
        "                    aspect = 'auto', origin = 'lower')\n",
        "plt.plot(reduced_data[:,0],reduced_data[:,1],'k.',markersize=5)\n",
        "\n",
        "#plot the centroid of each cluster\n",
        "centroids = kmeans.cluster_centers_\n",
        "plt.scatter(centroids[:,0],centroids[:,1],\n",
        "           marker='x',s=169, linewidths =3, color ='w',zorder =10)\n",
        "plt.title('K-Means Clustering on Stock Market Movements(PCA-Reduced Data)')\n",
        "plt.xlim(x_min,x_max)\n",
        "plt.ylim(y_min,y_max)\n",
        "plt.show()"
      ],
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 432x288 with 0 Axes>"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": [
              "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\n"
            ],
            "text/plain": [
              "<Figure size 720x720 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 23,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "nbconvert_exporter": "python",
      "name": "python",
      "version": "3.5.5",
      "pygments_lexer": "ipython3",
      "mimetype": "text/x-python"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "nteract": {
      "version": "0.15.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}